package com.hyt.it.ogt.kq.service.gov.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.hyt.it.ogt.kq.service.gov.api.ks.model.ExamTaskPageVO;
import com.hyt.it.ogt.kq.service.gov.model.dto.TaskDTO;
import com.hyt.it.ogt.kq.service.gov.model.entity.Task;
import com.hyt.it.ogt.kq.service.gov.model.param.TaskPageParam;
import com.hyt.it.ogt.kq.service.gov.model.vo.overview.ExamManageCollectVO;
import com.hyt.it.ogt.kq.service.gov.model.vo.task.TaskPageVO;
import com.hyt.model.PageParam;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Set;

/**
 * <p>
 * 考试任务表 Mapper 接口
 * </p>
 *
 * @author huangyh
 * @since 2021-03-08
 */
public interface TaskMapper extends BaseMapper<Task> {

    /**
     * 更新考试任务表
     *
     * @param taskDTO 考试任务参数
     * @return 是否成功
     */
    boolean updateTask(TaskDTO taskDTO);

    /**
     * 查询考试任务分页数据
     *
     * @param pageParam 分页参数
     * @param officeId  机构ID
     * @param taskIds   任务ID集合
     * @param deptIds   部门id
     * @return 分页数据
     */
    Page<TaskPageVO> page(TaskPageParam page, String officeId, List<String> taskIds, Set<String> deptIds);

    /**
     * 获取考试汇总数据
     *
     * @param taskId
     * @return
     */
    ExamManageCollectVO getExamManageData(String taskId);

    /**
     * 查询考试任务分页数据--管理员
     *
     * @param pageParam 分页参数
     * @param officeId  机构id
     * @return 分页数据
     */
    Page<ExamTaskPageVO> pageAdmin(Page<ExamTaskPageVO> pageParam, String officeId, List<String> deptIds, List<String> businessIds, String examState, String taskName);

    /**
     * 查询考试任务分页数据--监考员
     *
     * @param pageParam 分页参数
     * @param userId    用户id
     * @return 分页数据
     */
    Page<ExamTaskPageVO> pageProctor(Page<ExamTaskPageVO> pageParam, String userId, List<String> deptIds, List<String> businessIds, String examState, String taskName);

    /***
     * 根据限制数量获取考试任务列表
     * @param limit
     * @return
     */
    List<Task> getTaskListLimit(@Param("limit") Integer limit);


}
